This document explains zkpch.dat and the background fast-initialization process. A C++ interpreter has to do a lot of initialization of internal tables, etc., before it can start working. But an interpreter should start immediately when you invoke it from the operating system command line. To make zk start immediately, the initialization is done by the background process, which keeps the initialization data handy, such that zk can access it via shared memory. The data comes from zkpch.dat. When you use header files for your c++ code, you can input them any time by using #include, but for maximum convenience it's usually better to have the header files you use most often precompiled into zkpch.dat. You need the pro version of zk to precompile header files. The first step is to edit newpch.ini to add your header files to it, then run newpch.bat by typing "newpch" at the operating system command line. Also, if you build a new version of zk.exe (see link.txt for details) you have to build a new version of zkpch.dat, using newpch.bat as mentioned above, because the old version of zkpch.dat will not be compatible with your new version of zk.exe, and will probably cause various messy bug symptoms if you try to use the old version of one with the new version of the other. Be sure you archive and delete or rename the old version of zk.exe before you run newpch.bat in this situation, to be sure it isn't somehow using the old version instead of the new. The background fast-initialization process stays up till you log out. If it gets in your way for any reason, you can get rid of it by using killzkmd.bat, which you invoke by typing "killzkmd" at the NT command line. Then, to start it again, just run zk again, which will start it when it notices that it's gone. You can inquire whether the background process is up by using zkmdup.bat, which you invoke by typing "zkmdup" at the operating system command line, and it will give you a simple "up" or "down" answer. Normally there won't ever be a reason to use killzkmd, because the background process will normally not get in your way, and in fact you probably won't even notice it, except when you see zk start it. It does use space in your pagefile, and if that turns out to be a problem, you should increase the size of your pagefile, and/or set zkmb=9 or some other number. Whether you should increase or decrease zkmb, or not set it at all, depends on the situation. Normally you should not set zkmb at all, and if you run out of memory, you should normally just increase the size of your pagefile, by going to the program manager --> control panel --> system --> virtual memory. But if you do set zkmb, you have to use killzkmd.bat (mentioned above) to make the new number take effect. Also, if you don't have much RAM, you should add more. NT is a very RAM intensive operating system, and the amounts recommended are not really enough for the best performance. Zk should always feel responsive and should not take more than a fraction of a second to start. If it does, shortage of RAM is the most likely cause. But don't confuse RAM with virtual memory. Virtual memory is determined by the size of your pagefile, and is what can cause error messages by not having enough. RAM causes sluggishness when you don't have enough, but doesn't normally cause error messages.